package org.example.project_12.service;

import org.example.project_12.dto.LoginDto;
import org.example.project_12.dto.RegisterDto;
import org.example.project_12.dto.UpdateUserDto;
import org.example.project_12.dto.UserDto;
import org.example.project_12.entity.User;

import java.util.List;

public interface UserService {

    /**
     * 用户注册
     */
    User register(RegisterDto registerDto);

    /**
     * 用户登录
     */
    String login(LoginDto loginDto);

    /**
     * 用户注销
     */
    boolean logout(String token);

    /**
     * 获取用户信息
     */
    UserDto getUserInfo(Long userId);

    /**
     * 更新用户信息
     */
    boolean updateUserInfo(Long userId, UpdateUserDto updateUserDto);

    /**
     * 修改密码
     */
    boolean changePassword(Long userId, String oldPassword, String newPassword);

    /**
     * 获取用户列表（管理员功能）
     */
    List<UserDto> getUserList(String status, String role);

    /**
     * 审核用户（管理员功能）
     */
    boolean approveUser(Long userId, String status);

    /**
     * 禁用/启用用户（管理员功能）
     */
    boolean toggleUserStatus(Long userId, String status);

    /**
     * 验证令牌
     */
    User validateToken(String token);

    /**
     * 根据用户名查询用户
     */
    User getUserByUsername(String username);

    /**
     * 根据ID查询用户
     */
    User getUserById(Long userId);

    /**
     * 检查用户名是否存在
     */
    boolean isUsernameExists(String username);

    /**
     * 检查邮箱是否存在
     */
    boolean isEmailExists(String email);
}
